package com.java8.lambda.dome;

import java.util.function.BinaryOperator;

/**
 * <p>Description: [类功能描述]</p>
 * Created on 2020/2/25
 *
 * @author <a href="mailto: 819712047@qq.com">谢振东 </a>
 * @version 1.0
 */
public class test5 {
    /**
     * 5）.lambda的类型推断
     * 可以看到，在lambda中的参数列表，可以不用写参数的类型，跟java7中 new ArrayList<>();
     * 不需要指定泛型类型，这样的<>棱形操作符一样，根据上下文做类型的推断
     */
    public static void master() {
        System.out.println("-----------------test5.master()-----------------");

        BinaryOperator<Integer> binary = (Integer x, Integer y) -> x + y;
        // 3
        System.out.println(binary.apply(1, 2));
//        System.out.println(binary.apply("a", "B")); // 编译不通过直接报错

        BinaryOperator<Integer> binary2 = (x, y) -> x + y;
        // 3
        System.out.println(binary2.apply(1, 2));
//        System.out.println(binary2.apply("a", "B")); // 仍然编译不通过直接报错

        BinaryOperator<String> binary3 = (x, y) -> x + y;
        // 3
//        System.out.println(binary3.apply(1, 2)); // 编译不通过直接报错
        System.out.println(binary3.apply("a", "B")); // 编译通过
    }
}
